Elasticsearch

Boolean query

Les requêtes booléenne sont parmis les plus utilisé car elles permettent d'aggréger beaucoup de requête/filtre simple dans une grosse et complexe requête.

Une requête booléenne prend en compte 3 closes :

Clause Explication
must Les clause must doivent être vérifiés pour avoir le résultat.
should Les clause qui devraient être vérifiées dans les résultats. On peut appliquer un paramètre minimum_number_should_match pour indiquer le nombre de should qui devront être vérifiés
must_not La clause qui ne doit PAS apparaitre dans les résultats de la requête

Exemple de requête

Donner moi les entités venant de Bordeaux, dont le nom pourrait être micmac ou phase et dont l'adresse mail n'est surement pas une wanadoo !

{
    "query": {
        "bool" : {
            "should": [
                {
                    "term":{
                        "nom":"micmac"
                    }
                },
                {
                    "term":{
                        "nom":"phase"
                    }
                }    
            ],
            "minimum_number_should_match":1,
            "must": {
                "term": {"ville":"bordeaux"}
            },
            "must_not": {
                "prefix": {
                    "eml":"wanadoo"
                }
            }
        }
    }
}

Il existe l'équivalent en filtered mais il ne supporte pas le minimum_number_should_match.